import java.util.ArrayList;
import java.util.List;

public class ZigzagConversion {
    public String convert(String s, int numRows) {
        if(numRows < 2) {
            // 如果行小于2,直接返回原串
            return s;
        }

        List<StringBuilder> arr = new ArrayList<>();
        for(int i = 0; i < numRows; i++) {
            arr.add(new StringBuilder());
        }

        char[] ch = s.toCharArray();
        int index = 0;
        int flag = 1; // 用flag来标记行索引是增大还是减小
        for(char c : ch) {
            if(index == 0) {
                // 当下标在 0 时, 行索引应该是逐渐增大
                flag = 1;
            }else if(index == numRows - 1) {
                // 当下标在 n-1 时, 行索引应该是逐渐减小
                flag = -1;
            }
            arr.get(index).append(c);
            index += flag;
        }

        StringBuilder answer = new StringBuilder();
        for(StringBuilder r : arr) {
            answer.append(r);
        }

        return answer.toString();
    }
}
